home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Resources / Online / Term / Extras / Source / term-source.lha / LibPanelPlus.c < prev    next >
C/C++ Source or Header  |  1996-10-20  |  14KB  |  656 lines

  1. /*
  2. **    LibPanelPlus.c
  3. **
  4. **    Editing panel for transfer library configuration
  5. **
  6. **    Copyright © 1990-1996 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. **
  9. **    :ts=4
  10. */
  11.  
  12. #ifndef _GLOBAL_H
  13. #include "Global.h"
  14. #endif
  15.  
  16. enum    {    GAD_COMMAND=1000,
  17.             GAD_BUTTON1,GAD_BUTTON2,GAD_BUTTON3,GAD_BUTTON4,GAD_BUTTON5,
  18.             GAD_BUTTON6,GAD_BUTTON7,GAD_BUTTON8,GAD_BUTTON9,GAD_BUTTON10,
  19.             GAD_PAGER,GAD_PAGEGROUP,
  20.  
  21.             GAD_USE,GAD_CANCEL
  22.         };
  23.  
  24. VOID
  25. ASCIITransferPanel(struct Window *Window,struct Configuration *LocalConfig)
  26. {
  27.     STATIC LONG PageTitleID[4] =
  28.     {
  29.         MSG_INTERNAL_ASCII_TRANSFER_SEND_TXT,
  30.         MSG_INTERNAL_ASCII_TRANSFER_RECEIVE_TXT,
  31.         MSG_INTERNAL_ASCII_TRANSFER_GENERAL_TXT,
  32.         -1
  33.     };
  34.  
  35.     STATIC BYTE InitialPage = 0;
  36.  
  37.     struct TransferSettings    *OldSettings;
  38.     LayoutHandle *Handle;
  39.     STRPTR PageTitle[4];
  40.  
  41.     if(!(OldSettings = CreateNewConfigEntry(PREF_TRANSFER)))
  42.     {
  43.         DisplayBeep(Window ? Window->WScreen : NULL);
  44.         return;
  45.     }
  46.  
  47.     CopyConfigEntry(LocalConfig,PREF_TRANSFER,OldSettings);
  48.  
  49.     LocalizeStringTable(PageTitle,PageTitleID);
  50.  
  51.     if(Handle = LT_CreateHandleTags(Window->WScreen,
  52.         LAHN_LocaleHook,    &LocaleHook,
  53.     TAG_DONE))
  54.     {
  55.         struct Window *PanelWindow;
  56.  
  57.         LT_New(Handle,
  58.             LA_Type,    VERTICAL_KIND,
  59.         TAG_DONE);
  60.         {
  61.             LT_New(Handle,
  62.                 LA_Type,    VERTICAL_KIND,
  63.             TAG_DONE);
  64.             {
  65.                 LT_New(Handle,
  66.                     LA_Type,            TAB_KIND,
  67.                     LA_LabelID,            MSG_XFER_PAGE_TXT,
  68.                     LA_ID,                GAD_PAGER,
  69.                     GTCY_Labels,        PageTitle,
  70.                     LACY_AutoPageID,    GAD_PAGEGROUP,
  71.                     LACY_TabKey,        TRUE,
  72.                     LA_BYTE,            &InitialPage,
  73.                     LATB_FullWidth,        TRUE,
  74.                 TAG_DONE);
  75.  
  76.                 LT_EndGroup(Handle);
  77.             }
  78.  
  79.             LT_New(Handle,
  80.                 LA_Type,    VERTICAL_KIND,
  81.                 LA_ID,        GAD_PAGEGROUP,
  82.                 LAGR_ActivePage,InitialPage,
  83.             TAG_DONE);
  84.             {
  85.                 LT_New(Handle,
  86.                     LA_Type,    VERTICAL_KIND,
  87.                 TAG_DONE);
  88.                 {
  89.                     LT_New(Handle,
  90.                         LA_Type,    VERTICAL_KIND,
  91.                     TAG_DONE);
  92.                     {
  93.                         LT_New(Handle,
  94.                             LA_Type,        CYCLE_KIND,
  95.                             LA_LabelID,        MSG_CLIPPANEL_TEXT_PACING_GAD,
  96.                             LA_UBYTE,        &LocalConfig->TransferConfig->PacingMode,
  97.                             LACY_FirstLabel,MSG_CLIPPANEL_DIRECT_TXT,
  98.                             LACY_LastLabel,    MSG_CLIPPANEL_KEYDELAY_TXT,
  99.                         TAG_DONE);
  100.  
  101.                         LT_EndGroup(Handle);
  102.                     }
  103.  
  104.                     LT_New(Handle,
  105.                         LA_Type,    VERTICAL_KIND,
  106.                         LA_LabelID,    MSG_V36_0021,
  107.                     TAG_DONE);
  108.                     {
  109.                         LT_New(Handle,
  110.                             LA_Type,            SliderType,
  111.                             LA_LabelID,            MSG_CLIPPANEL_CHAR_DELAY_GAD,
  112.                             GTSL_Min,            0,
  113.                             GTSL_Max,            10 * 100,
  114.                             LA_Chars,            10,
  115.                             LA_WORD,            &LocalConfig->TransferConfig->CharDelay,
  116.                             GTSL_LevelFormat,    "%s s",
  117.                             GTSL_DispFunc,        StandardShowTime,
  118.                         TAG_DONE);
  119.  
  120.                         LT_New(Handle,
  121.                             LA_Type,            SliderType,
  122.                             LA_LabelID,            MSG_CLIPPANEL_LINE_DELAY_GAD,
  123.                             GTSL_Min,            0,
  124.                             GTSL_Max,            10 * 100,
  125.                             LA_Chars,            10,
  126.                             LA_WORD,            &LocalConfig->TransferConfig->LineDelay,
  127.                             GTSL_LevelFormat,    "%s s",
  128.                             GTSL_DispFunc,        StandardShowTime,
  129.                         TAG_DONE);
  130.  
  131.                         LT_EndGroup(Handle);
  132.                     }
  133.  
  134.                     LT_New(Handle,
  135.                         LA_Type,    VERTICAL_KIND,
  136.                         LA_LabelID,    MSG_V36_0024,
  137.                     TAG_DONE);
  138.                     {
  139.                         LT_New(Handle,
  140.                             LA_Type,            STRING_KIND,
  141.                             LA_LabelID,            MSG_CLIPPANEL_LINE_PROMPT_GAD,
  142.                             LA_STRPTR,            LocalConfig->TransferConfig->LinePrompt,
  143.                             LA_Chars,            10,
  144.                             GTST_MaxChars,        sizeof(LocalConfig->TransferConfig->LinePrompt) - 1,
  145.                         TAG_DONE);
  146.  
  147.                         LT_New(Handle,
  148.                             LA_Type,            SliderType,
  149.                             LA_LabelID,            MSG_CLIPPANEL_SEND_TIMEOUT_GAD,
  150.                             GTSL_Min,            0,
  151.                             GTSL_Max,            10 * 100,
  152.                             LA_WORD,            &LocalConfig->TransferConfig->SendTimeout,
  153.                             GTSL_LevelFormat,    "%s s",
  154.                             GTSL_DispFunc,        StandardShowTime,
  155.                         TAG_DONE);
  156.  
  157.                         LT_EndGroup(Handle);
  158.                     }
  159.  
  160.  
  161.                     LT_New(Handle,
  162.                         LA_Type,    VERTICAL_KIND,
  163.                     TAG_DONE);
  164.                     {
  165.                         LT_New(Handle,
  166.                             LA_Type,        CYCLE_KIND,
  167.                             LA_LabelID,        MSG_TERMINALPANEL_SEND_CR_GAD,
  168.                             LA_BYTE,        &LocalConfig->TransferConfig->SendCR,
  169.                             GTCY_Labels,    EOL_Labels,
  170.                         TAG_DONE);
  171.  
  172.                         LT_New(Handle,
  173.                             LA_Type,        CYCLE_KIND,
  174.                             LA_LabelID,        MSG_TERMINALPANEL_SEND_LF_GAD,
  175.                             LA_BYTE,        &LocalConfig->TransferConfig->SendLF,
  176.                             GTCY_Labels,    EOL_Labels,
  177.                         TAG_DONE);
  178.  
  179.                         LT_EndGroup(Handle);
  180.                     }
  181.  
  182.                     LT_New(Handle,
  183.                         LA_Type,    VERTICAL_KIND,
  184.                     TAG_DONE);
  185.                     {
  186.                         LT_New(Handle,
  187.                             LA_Type,        XBAR_KIND,
  188.                         TAG_DONE);
  189.  
  190.                         LT_New(Handle,
  191.                             LA_Type,        CHECKBOX_KIND,
  192.                             LA_LabelID,        MSG_EXPAND_BLANK_LINES_GAD,
  193.                             LA_BYTE,        &LocalConfig->TransferConfig->ExpandBlankLines,
  194.                         TAG_DONE);
  195.  
  196.                         LT_EndGroup(Handle);
  197.                     }
  198.  
  199.                     LT_EndGroup(Handle);
  200.                 }
  201.  
  202.                 LT_New(Handle,
  203.                     LA_Type,    VERTICAL_KIND,
  204.                 TAG_DONE);
  205.                 {
  206.                     LT_New(Handle,
  207.                         LA_Type,        CYCLE_KIND,
  208.                         LA_LabelID,        MSG_TERMINALPANEL_RECEIVE_CR_GAD,
  209.                         LA_BYTE,        &LocalConfig->TransferConfig->ReceiveCR,
  210.                         GTCY_Labels,    EOL_Labels,
  211.                     TAG_DONE);
  212.  
  213.                     LT_New(Handle,
  214.                         LA_Type,        CYCLE_KIND,
  215.                         LA_LabelID,        MSG_TERMINALPANEL_RECEIVE_LF_GAD,
  216.                         LA_BYTE,        &LocalConfig->TransferConfig->ReceiveLF,
  217.                         GTCY_Labels,    EOL_Labels,
  218.                     TAG_DONE);
  219.  
  220.                     LT_New(Handle,
  221.                         LA_Type,        CHECKBOX_KIND,
  222.                         LA_LabelID,        MSG_INTERNAL_ASCII_TRANSFER_IGNORE_DATA_PAST_ARNOLD_TXT,
  223.                         LA_BYTE,        &LocalConfig->TransferConfig->IgnoreDataPastArnold,
  224.                     TAG_DONE);
  225.  
  226.                     LT_New(Handle,
  227.                         LA_Type,        INTEGER_KIND,
  228.                         LA_LabelID,        MSG_INTERNAL_ASCII_TRANSFER_TERMINATOR_CHAR_TXT,
  229.                         LA_BYTE,        &LocalConfig->TransferConfig->TerminatorChar,
  230.                         LAIN_Min,        0,
  231.                         LAIN_Max,        255,
  232.                     TAG_DONE);
  233.  
  234.                     LT_EndGroup(Handle);
  235.                 }
  236.  
  237.                 LT_New(Handle,
  238.                     LA_Type,    VERTICAL_KIND,
  239.                 TAG_DONE);
  240.                 {
  241.                     LT_New(Handle,
  242.                         LA_Type,    CHECKBOX_KIND,
  243.                         LA_LabelID,    MSG_LIBPANEL_QUIET_TRANSFER_GAD,
  244.                         LA_BYTE,    &LocalConfig->TransferConfig->QuietTransfer,
  245.                     TAG_DONE);
  246.  
  247.                     LT_New(Handle,
  248.                         LA_Type,    CHECKBOX_KIND,
  249.                         LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_STRIP_BIT_7_TXT,
  250.                         LA_BYTE,    &LocalConfig->TransferConfig->StripBit8,
  251.                     TAG_DONE);
  252.  
  253.                     LT_EndGroup(Handle);
  254.                 }
  255.  
  256.                 LT_EndGroup(Handle);
  257.             }
  258.  
  259.             LT_New(Handle,
  260.                 LA_Type,VERTICAL_KIND,
  261.             TAG_DONE);
  262.             {
  263.                 LT_New(Handle,
  264.                     LA_Type,        XBAR_KIND,
  265.                     LAXB_FullSize,    TRUE,
  266.                 TAG_DONE);
  267.  
  268.                 LT_EndGroup(Handle);
  269.             }
  270.  
  271.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  272.                 LAGR_SameSize,    TRUE,
  273.                 LAGR_Spread,    TRUE,
  274.             TAG_DONE);
  275.             {
  276.                 LT_New(Handle,
  277.                     LA_Type,        BUTTON_KIND,
  278.                     LA_LabelID,        MSG_GLOBAL_USE_GAD,
  279.                     LA_ID,            GAD_USE,
  280.                     LABT_ReturnKey,    TRUE,
  281.                     LABT_ExtraFat,    TRUE,
  282.                 TAG_DONE);
  283.  
  284.                 LT_New(Handle,
  285.                     LA_Type,        BUTTON_KIND,
  286.                     LA_LabelID,        MSG_GLOBAL_CANCEL_GAD,
  287.                     LA_ID,            GAD_CANCEL,
  288.                     LABT_EscKey,    TRUE,
  289.                     LABT_ExtraFat,    TRUE,
  290.                 TAG_DONE);
  291.  
  292.                 LT_EndGroup(Handle);
  293.             }
  294.  
  295.             LT_EndGroup(Handle);
  296.         }
  297.  
  298.         if(PanelWindow = LT_Build(Handle,
  299.             LAWN_TitleID,        MSG_INTERNAL_ASCII_TRANSFER_TRANSFER_TXT,
  300.             LAWN_HelpHook,        &GuideHook,
  301.             LAWN_Parent,        Window,
  302.             WA_DepthGadget,        TRUE,
  303.             WA_DragBar,            TRUE,
  304.             WA_RMBTrap,            TRUE,
  305.             WA_Activate,        TRUE,
  306.             WA_SimpleRefresh,    TRUE,
  307.         TAG_DONE))
  308.         {
  309.             struct IntuiMessage    *Message;
  310.             struct Gadget *MsgGadget;
  311.             ULONG MsgClass;
  312.             BOOL Done;
  313.  
  314.             GuideContext(CONTEXT_ASCII_TRANSFER_SETTINGS);
  315.  
  316.             PushWindow(PanelWindow);
  317.  
  318.             LT_ShowWindow(Handle,TRUE);
  319.  
  320.             Done = FALSE;
  321.  
  322.             do
  323.             {
  324.                 if(Wait(PORTMASK(PanelWindow->UserPort) | SIG_BREAK) & SIG_BREAK)
  325.                 {
  326.                     PutConfigEntry(LocalConfig,OldSettings,PREF_TRANSFER);
  327.                     break;
  328.                 }
  329.  
  330.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  331.                 {
  332.                     MsgClass    = Message->Class;
  333.                     MsgGadget    = (struct Gadget *)Message->IAddress;
  334.  
  335.                     LT_ReplyIMsg(Message);
  336.  
  337.                     if(MsgClass == IDCMP_GADGETUP)
  338.                     {
  339.                         switch(MsgGadget->GadgetID)
  340.                         {
  341.                             case GAD_USE:
  342.  
  343.                                 LT_UpdateStrings(Handle);
  344.  
  345.                                 Done = TRUE;
  346.                                 break;
  347.  
  348.                             case GAD_CANCEL:
  349.  
  350.                                 PutConfigEntry(LocalConfig,OldSettings,PREF_TRANSFER);
  351.  
  352.                                 Done = TRUE;
  353.                                 break;
  354.                         }
  355.                     }
  356.                 }
  357.             }
  358.             while(!Done);
  359.  
  360.             PopWindow();
  361.         }
  362.  
  363.         LT_DeleteHandle(Handle);
  364.     }
  365.  
  366.     FreeVecPooled(OldSettings);
  367. }
  368.  
  369. BOOL
  370. ExternalCommandPanel(struct Window *Parent,STRPTR Command)
  371. {
  372.     LayoutHandle *Handle;
  373.     BOOL Result;
  374.  
  375.     Result = FALSE;
  376.  
  377.     if(Handle = LT_CreateHandleTags(Parent->WScreen,
  378.         LAHN_LocaleHook,    &LocaleHook,
  379.     TAG_DONE))
  380.     {
  381.         STATIC LONG ButtonLabels[] =
  382.         {
  383.             MSG_XFER_BUTTON1_TXT,MSG_XFER_BUTTON2_TXT,
  384.             MSG_XFER_BUTTON3_TXT,MSG_XFER_BUTTON4_TXT,
  385.             MSG_XFER_BUTTON5_TXT,MSG_XFER_BUTTON6_TXT,
  386.             MSG_XFER_BUTTON7_TXT,MSG_XFER_BUTTON8_TXT,
  387.             MSG_XFER_BUTTON9_TXT,MSG_XFER_BUTTON10_TXT,
  388.         };
  389.  
  390.         UBYTE LocalCommand[MAX_FILENAME_LENGTH];
  391.         struct Window *PanelWindow;
  392.         LONG i,Len,Max;
  393.  
  394.         LimitedStrcpy(sizeof(LocalCommand),LocalCommand,Command);
  395.  
  396.         for(i = Max = 0 ; i < 10 ; i++)
  397.         {
  398.             if((Len = LT_LabelChars(Handle,LocaleString(ButtonLabels[i]))) > Max)
  399.                 Max = Len;
  400.         }
  401.  
  402.         LT_New(Handle,
  403.             LA_Type,    VERTICAL_KIND,
  404.         TAG_DONE);
  405.         {
  406.             LT_New(Handle,
  407.                 LA_Type,    VERTICAL_KIND,
  408.             TAG_DONE);
  409.             {
  410.                 LT_New(Handle,
  411.                     LA_Type,        STRING_KIND,
  412.                     LA_ID,            GAD_COMMAND,
  413.                     LA_LabelID,        MSG_XFER_COMMAND_TXT,
  414.                     LA_Chars,        50,
  415.                     LA_STRPTR,        LocalCommand,
  416.                     GTST_MaxChars,    sizeof(LocalCommand) - 1,
  417.                     LAST_Picker,    TRUE,
  418.                 TAG_DONE);
  419.  
  420.                 LT_New(Handle,
  421.                     LA_Type,    XBAR_KIND,
  422.                 TAG_DONE);
  423.  
  424.                 LT_EndGroup(Handle);
  425.             }
  426.  
  427.             LT_New(Handle,
  428.                 LA_Type,    VERTICAL_KIND,
  429.             TAG_DONE);
  430.             {
  431.                 LT_New(Handle,
  432.                     LA_Type,        HORIZONTAL_KIND,
  433.                     LAGR_SameSize,    TRUE,
  434.                 TAG_DONE);
  435.                 {
  436.                     for(i = 0 ; i < 5 ; i++)
  437.                     {
  438.                         LT_New(Handle,
  439.                             LA_Type,    BUTTON_KIND,
  440.                             LA_Chars,    Max,
  441.                             LA_ID,        GAD_BUTTON1 + i,
  442.                             LA_LabelID,    ButtonLabels[i],
  443.                         TAG_DONE);
  444.                     }
  445.  
  446.                     LT_EndGroup(Handle);
  447.                 }
  448.  
  449.                 LT_New(Handle,
  450.                     LA_Type,        HORIZONTAL_KIND,
  451.                     LAGR_SameSize,    TRUE,
  452.                 TAG_DONE);
  453.                 {
  454.                     for(i = 5 ; i < 10 ; i++)
  455.                     {
  456.                         LT_New(Handle,
  457.                             LA_Type,    BUTTON_KIND,
  458.                             LA_Chars,    Max,
  459.                             LA_ID,        GAD_BUTTON1 + i,
  460.                             LA_LabelID,    ButtonLabels[i],
  461.                         TAG_DONE);
  462.                     }
  463.  
  464.                     LT_EndGroup(Handle);
  465.                 }
  466.  
  467.                 LT_EndGroup(Handle);
  468.             }
  469.  
  470.             LT_New(Handle,
  471.                 LA_Type,VERTICAL_KIND,
  472.             TAG_DONE);
  473.             {
  474.                 LT_New(Handle,
  475.                     LA_Type,        XBAR_KIND,
  476.                     LAXB_FullSize,    TRUE,
  477.                 TAG_DONE);
  478.  
  479.                 LT_EndGroup(Handle);
  480.             }
  481.  
  482.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  483.                 LAGR_SameSize,    TRUE,
  484.                 LAGR_Spread,    TRUE,
  485.             TAG_DONE);
  486.             {
  487.                 LT_New(Handle,
  488.                     LA_Type,        BUTTON_KIND,
  489.                     LA_LabelID,        MSG_GLOBAL_USE_GAD,
  490.                     LA_ID,            GAD_USE,
  491.                     LABT_ReturnKey,    TRUE,
  492.                     LABT_ExtraFat,    TRUE,
  493.                 TAG_DONE);
  494.  
  495.                 LT_New(Handle,
  496.                     LA_Type,        BUTTON_KIND,
  497.                     LA_LabelID,        MSG_GLOBAL_CANCEL_GAD,
  498.                     LA_ID,            GAD_CANCEL,
  499.                     LABT_EscKey,    TRUE,
  500.                     LABT_ExtraFat,    TRUE,
  501.                 TAG_DONE);
  502.  
  503.                 LT_EndGroup(Handle);
  504.             }
  505.  
  506.             LT_EndGroup(Handle);
  507.         }
  508.  
  509.         if(PanelWindow = LT_Build(Handle,
  510.             LAWN_TitleID,        MSG_EXTERNAL_PROGRAM_TXT,
  511.             LAWN_HelpHook,        &GuideHook,
  512.             LAWN_Parent,        Parent,
  513.             WA_DepthGadget,        TRUE,
  514.             WA_DragBar,            TRUE,
  515.             WA_RMBTrap,            TRUE,
  516.             WA_Activate,        TRUE,
  517.             WA_SimpleRefresh,    TRUE,
  518.         TAG_DONE))
  519.         {
  520.             STATIC STRPTR Strings[] =
  521.             {
  522.                 " %f",
  523.                 " %m",
  524.                 " %p",
  525.                 " %d",
  526.                 " %u",
  527.                 " %<",
  528.                 " %>",
  529.                 " %s",
  530.                 " %b",
  531.                 " %c"
  532.             };
  533.  
  534.             UBYTE LocalBuffer[MAX_FILENAME_LENGTH];
  535.             struct IntuiMessage    *Message;
  536.             struct Gadget *MsgGadget;
  537.             ULONG MsgClass;
  538.             BOOL Done;
  539.  
  540.             GuideContext(CONTEXT_PARAMETERS);
  541.  
  542.             PushWindow(PanelWindow);
  543.  
  544.             LT_ShowWindow(Handle,TRUE);
  545.  
  546.             Done = FALSE;
  547.  
  548.             do
  549.             {
  550.                 if(Wait(PORTMASK(PanelWindow->UserPort) | SIG_BREAK) & SIG_BREAK)
  551.                     break;
  552.  
  553.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  554.                 {
  555.                     MsgClass    = Message->Class;
  556.                     MsgGadget    = (struct Gadget *)Message->IAddress;
  557.  
  558.                     LT_ReplyIMsg(Message);
  559.  
  560.                     if(MsgClass == IDCMP_GADGETUP)
  561.                     {
  562.                         switch(MsgGadget->GadgetID)
  563.                         {
  564.                             case GAD_USE:
  565.  
  566.                                 strcpy(Command,LocalCommand);
  567.  
  568.                                 Result = Done = TRUE;
  569.                                 break;
  570.  
  571.                             case GAD_CANCEL:
  572.  
  573.                                 Done = TRUE;
  574.                                 break;
  575.  
  576.                             default:
  577.  
  578.                                 if(MsgGadget->GadgetID >= GAD_BUTTON1 && MsgGadget->GadgetID <= GAD_BUTTON8)
  579.                                 {
  580.                                     LT_LockWindow(PanelWindow);
  581.  
  582.                                     if(strlen(LocalCommand) + 3 < 255)
  583.                                     {
  584.                                         LimitedStrcat(sizeof(LocalCommand),LocalCommand,Strings[MsgGadget->GadgetID - GAD_BUTTON1]);
  585.  
  586.                                         LT_SetAttributes(Handle,GAD_COMMAND,
  587.                                             GTST_String,            LocalCommand,
  588.                                             LAST_CursorPosition,    -1,
  589.                                         TAG_DONE);
  590.                                     }
  591.                                     else
  592.                                         DisplayBeep(PanelWindow->WScreen);
  593.  
  594.                                     LT_UnlockWindow(PanelWindow);
  595.                                 }
  596.  
  597.                                 break;
  598.                         }
  599.                     }
  600.  
  601.                     if(MsgClass == IDCMP_IDCMPUPDATE)
  602.                     {
  603.                         struct FileRequester *FileRequest;
  604.                         STRPTR Index,Args;
  605.  
  606.                         strcpy(LocalBuffer,LocalCommand);
  607.  
  608.                         Index = FilePart(LocalBuffer);
  609.  
  610.                         while(*Index && *Index != ' ')
  611.                             Index++;
  612.  
  613.                         if(*Index == ' ')
  614.                         {
  615.                             *Index = 0;
  616.  
  617.                             Args = &LocalCommand[(ULONG)Index - (ULONG)LocalBuffer + 1];
  618.                         }
  619.                         else
  620.                             Args = NULL;
  621.  
  622.                         if(FileRequest = OpenSingleFile(Window,LocaleString(MSG_XFER_SELECT_COMMAND_TXT),LocaleString(MSG_GLOBAL_SELECT_TXT),NULL,LocalBuffer,sizeof(LocalBuffer)))
  623.                         {
  624.                             LONG Length = strlen(LocalBuffer);
  625.  
  626.                             FreeAslRequest(FileRequest);
  627.  
  628.                             if(Length < sizeof(LocalBuffer) - 3 && Args)
  629.                             {
  630.                                 LimitedStrcat(sizeof(LocalBuffer),LocalBuffer," ");
  631.  
  632.                                 Length++;
  633.  
  634.                                 CopyMem(Args,LocalBuffer + Length,sizeof(LocalBuffer) - 1 - Length);
  635.  
  636.                                 LocalBuffer[sizeof(LocalBuffer) - 1] = 0;
  637.                             }
  638.  
  639.                             LT_SetAttributes(Handle,GAD_COMMAND,
  640.                                 GTST_String,LocalBuffer,
  641.                             TAG_DONE);
  642.                         }
  643.                     }
  644.                 }
  645.             }
  646.             while(!Done);
  647.  
  648.             PopWindow();
  649.         }
  650.  
  651.         LT_DeleteHandle(Handle);
  652.     }
  653.  
  654.     return(Result);
  655. }
  656.